package com.zxj.transfer.client;

import com.zxj.transfer.api.service.Bank1Service;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.math.BigDecimal;
import java.util.UUID;

/**
 * 7.（必做）结合 dubbo+hmily，实现一个 TCC 外汇交易处理，代码提交到 GitHub:
 *
 *     用户 A 的美元账户和人民币账户都在 A 库，使用 1 美元兑换 7 人民币 ;
 *     用户 B 的美元账户和人民币账户都在 B 库，使用 7 人民币兑换 1 美元 ;
 *     设计账户表，冻结资产表，实现上述两个本地事务的分布式事务。
 */
@Slf4j
@SpringBootApplication
public class BankTransferClientApplication {

    @DubboReference(version = "1.0.0") //, url = "dubbo://127.0.0.1:12345")
    private Bank1Service bank1Service;

    public static void main(String[] args) {
        SpringApplication.run(BankTransferClientApplication.class, args);
    }


    @Bean
    public ApplicationRunner runner() {
        return args -> {
            Integer userIdA = 1;
            BigDecimal usAccount = new BigDecimal(1);
            Integer userIdB = 2;
            BigDecimal rmbAccount = new BigDecimal(7);
            String tid = UUID.randomUUID().toString();
            bank1Service.changeUs(tid, userIdA, usAccount, userIdB, rmbAccount);
        };
    }
}
